Virtualization techniques have a long history in the development of hardware and software systems. Virtual memory, virtual (in-memory) disk storage, and operating system virtual machines are but a few examples of techniques that have long been employed in conventional computational systems. Generally, virtualization techniques seek to abstract underlying resources from layers of functionality (typically software) that employ the resources. Today, partitioning a physical resource for presentation (to multiple resource consumers) as an isolated, but functionally complete instance of the virtualized resource is employed in many modern software systems, including modern operating systems.
While virtualization has long been employed as a method for partitioning individual resources (e.g., in virtual memory or for multi-threaded software executed on a single preemptively scheduled processor), in recent years, virtualization techniques have been employed on a more comprehensive scale. As a result, commercially-available virtualization systems (such as those available from VMware, Microsoft and XenSource) seek to virtualize hardware systems more completely, for example, by presenting an operating system or other software system with a virtualization of underlying hardware.
Virtualization technology has proven useful in both personal and shared computing environments. For example, in data center deployments, virtualization technology facilitates server consolidation and has been used for server replication, downtime management, fault tolerance and disaster recovery. At the desktop, laptop or workstation, virtualization technology has been used to provide support multiple operating system instances and/or virtual machines. For example, support for concurrent execution of multiple operating system and/or virtual machines instances can provide a user, on a single machine, with capabilities normally associated with two or more dissimilar computer systems, e.g., a Microsoft® Windows based personal computer and an iMac® computer running OS X. Microsoft Windows is a trademark of Microsoft Corporation. iMac is a trademark of Apple Computer, Inc.
Often, a virtualization system is hosted as software whose execution is coordinated by a first operating system executing on underlying hardware. The virtualization system exposes resources of the underlying hardware as at least one virtual machine. The virtual machine, in turn, supports execution of a second operating system. Typically, in such configurations, the first operating system is referred to as a host operating system and the second as a guest operating system. Thus, a user that needs or wants access to facilities of two different operating systems (or supported applications) might configure his/her workstation to run both host and guest operating system instances using virtualization technology. In such case, the host operating system more directly interfaces with the hardware machine, while the guest operating system typically incurs at least some additional overhead running within a virtual machine. Improved techniques and flexibility are desired.